From 3c90c2cd536b7ccec7189be22004fbfcc92c4c87 Mon Sep 17 00:00:00 2001 From: Tim Janik Date: Fri, 19 Jun 1998 02:07:47 +0000 Subject: [PATCH] replaced some gtk_object_data_force_id with g_quark_from_static_string Fri Jun 19 03:29:04 1998 Tim Janik * gtk/gtkaccelgroup.c: * gtk/gtkbindings.c: * gtk/gtkcontainer.c: * gtk/gtkitemfactory.c: * gtk/gtkobject.c: * gtk/gtksignal.c: * gtk/gtkwidget.c: replaced some gtk_object_data_force_id with g_quark_from_static_string calls to save memory. * gtk/gtkobject.c (gtk_object_set_data_by_id_full): invoke the destroy function _after_ the new data has been setup. minor changes to object data functions to feature the GQuark type. --- ChangeLog | 15 +++++++ ChangeLog.pre-2-0 | 15 +++++++ ChangeLog.pre-2-10 | 15 +++++++ ChangeLog.pre-2-2 | 15 +++++++ ChangeLog.pre-2-4 | 15 +++++++ ChangeLog.pre-2-6 | 15 +++++++ ChangeLog.pre-2-8 | 15 +++++++ gtk/gtkaccelgroup.c | 4 +- gtk/gtkbindings.c | 4 +- gtk/gtkcontainer.c | 4 +- gtk/gtkitemfactory.c | 102 +++++++++++++++++++++---------------------- gtk/gtkobject.c | 50 +++++++++------------ gtk/gtkobject.h | 12 ++--- gtk/gtksignal.c | 67 ++++++++++++++-------------- gtk/gtkwidget.c | 14 +++--- 15 files changed, 230 insertions(+), 132 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0b8e8cb932..2bfd7a1d5f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +Fri Jun 19 03:29:04 1998 Tim Janik + + * gtk/gtkaccelgroup.c: + * gtk/gtkbindings.c: + * gtk/gtkcontainer.c: + * gtk/gtkitemfactory.c: + * gtk/gtkobject.c: + * gtk/gtksignal.c: + * gtk/gtkwidget.c: replaced some gtk_object_data_force_id with + g_quark_from_static_string calls to save memory. + + * gtk/gtkobject.c (gtk_object_set_data_by_id_full): invoke the destroy + function _after_ the new data has been setup. + minor changes to object data functions to feature the GQuark type. + Thu Jun 18 21:13:54 1998 Owen Taylor * gtk/gtkmain.c (gtk_init): Remove --g-fatal-warnings flag diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 0b8e8cb932..2bfd7a1d5f 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,18 @@ +Fri Jun 19 03:29:04 1998 Tim Janik + + * gtk/gtkaccelgroup.c: + * gtk/gtkbindings.c: + * gtk/gtkcontainer.c: + * gtk/gtkitemfactory.c: + * gtk/gtkobject.c: + * gtk/gtksignal.c: + * gtk/gtkwidget.c: replaced some gtk_object_data_force_id with + g_quark_from_static_string calls to save memory. + + * gtk/gtkobject.c (gtk_object_set_data_by_id_full): invoke the destroy + function _after_ the new data has been setup. + minor changes to object data functions to feature the GQuark type. + Thu Jun 18 21:13:54 1998 Owen Taylor * gtk/gtkmain.c (gtk_init): Remove --g-fatal-warnings flag diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 0b8e8cb932..2bfd7a1d5f 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,18 @@ +Fri Jun 19 03:29:04 1998 Tim Janik + + * gtk/gtkaccelgroup.c: + * gtk/gtkbindings.c: + * gtk/gtkcontainer.c: + * gtk/gtkitemfactory.c: + * gtk/gtkobject.c: + * gtk/gtksignal.c: + * gtk/gtkwidget.c: replaced some gtk_object_data_force_id with + g_quark_from_static_string calls to save memory. + + * gtk/gtkobject.c (gtk_object_set_data_by_id_full): invoke the destroy + function _after_ the new data has been setup. + minor changes to object data functions to feature the GQuark type. + Thu Jun 18 21:13:54 1998 Owen Taylor * gtk/gtkmain.c (gtk_init): Remove --g-fatal-warnings flag diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 0b8e8cb932..2bfd7a1d5f 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,18 @@ +Fri Jun 19 03:29:04 1998 Tim Janik + + * gtk/gtkaccelgroup.c: + * gtk/gtkbindings.c: + * gtk/gtkcontainer.c: + * gtk/gtkitemfactory.c: + * gtk/gtkobject.c: + * gtk/gtksignal.c: + * gtk/gtkwidget.c: replaced some gtk_object_data_force_id with + g_quark_from_static_string calls to save memory. + + * gtk/gtkobject.c (gtk_object_set_data_by_id_full): invoke the destroy + function _after_ the new data has been setup. + minor changes to object data functions to feature the GQuark type. + Thu Jun 18 21:13:54 1998 Owen Taylor * gtk/gtkmain.c (gtk_init): Remove --g-fatal-warnings flag diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 0b8e8cb932..2bfd7a1d5f 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,18 @@ +Fri Jun 19 03:29:04 1998 Tim Janik + + * gtk/gtkaccelgroup.c: + * gtk/gtkbindings.c: + * gtk/gtkcontainer.c: + * gtk/gtkitemfactory.c: + * gtk/gtkobject.c: + * gtk/gtksignal.c: + * gtk/gtkwidget.c: replaced some gtk_object_data_force_id with + g_quark_from_static_string calls to save memory. + + * gtk/gtkobject.c (gtk_object_set_data_by_id_full): invoke the destroy + function _after_ the new data has been setup. + minor changes to object data functions to feature the GQuark type. + Thu Jun 18 21:13:54 1998 Owen Taylor * gtk/gtkmain.c (gtk_init): Remove --g-fatal-warnings flag diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 0b8e8cb932..2bfd7a1d5f 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,18 @@ +Fri Jun 19 03:29:04 1998 Tim Janik + + * gtk/gtkaccelgroup.c: + * gtk/gtkbindings.c: + * gtk/gtkcontainer.c: + * gtk/gtkitemfactory.c: + * gtk/gtkobject.c: + * gtk/gtksignal.c: + * gtk/gtkwidget.c: replaced some gtk_object_data_force_id with + g_quark_from_static_string calls to save memory. + + * gtk/gtkobject.c (gtk_object_set_data_by_id_full): invoke the destroy + function _after_ the new data has been setup. + minor changes to object data functions to feature the GQuark type. + Thu Jun 18 21:13:54 1998 Owen Taylor * gtk/gtkmain.c (gtk_init): Remove --g-fatal-warnings flag diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 0b8e8cb932..2bfd7a1d5f 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,18 @@ +Fri Jun 19 03:29:04 1998 Tim Janik + + * gtk/gtkaccelgroup.c: + * gtk/gtkbindings.c: + * gtk/gtkcontainer.c: + * gtk/gtkitemfactory.c: + * gtk/gtkobject.c: + * gtk/gtksignal.c: + * gtk/gtkwidget.c: replaced some gtk_object_data_force_id with + g_quark_from_static_string calls to save memory. + + * gtk/gtkobject.c (gtk_object_set_data_by_id_full): invoke the destroy + function _after_ the new data has been setup. + minor changes to object data functions to feature the GQuark type. + Thu Jun 18 21:13:54 1998 Owen Taylor * gtk/gtkmain.c (gtk_init): Remove --g-fatal-warnings flag diff --git a/gtk/gtkaccelgroup.c b/gtk/gtkaccelgroup.c index 1eb3e77628..0824e2a2a0 100644 --- a/gtk/gtkaccelgroup.c +++ b/gtk/gtkaccelgroup.c @@ -94,8 +94,8 @@ gtk_accel_group_new (void) if (!accel_groups_key_id) { - accel_groups_key_id = gtk_object_data_force_id (accel_groups_key); - accel_entries_key_id = gtk_object_data_force_id (accel_entries_key); + accel_groups_key_id = g_quark_from_static_string (accel_groups_key); + accel_entries_key_id = g_quark_from_static_string (accel_entries_key); accel_entry_hash_table = g_hash_table_new (gtk_accel_entries_hash, gtk_accel_entries_equal); diff --git a/gtk/gtkbindings.c b/gtk/gtkbindings.c index ad75a0228b..27864fed49 100644 --- a/gtk/gtkbindings.c +++ b/gtk/gtkbindings.c @@ -35,7 +35,7 @@ static GHashTable *binding_entry_hash_table = NULL; static GSList *binding_set_list = NULL; static const gchar *key_class_binding_set = "gtk-class-binding-set"; -static guint key_id_class_binding_set = 0; +static GQuark key_id_class_binding_set = 0; /* --- functions --- */ @@ -424,7 +424,7 @@ gtk_binding_set_by_class (gpointer object_class) g_return_val_if_fail (GTK_IS_OBJECT_CLASS (class), NULL); if (!key_id_class_binding_set) - key_id_class_binding_set = g_dataset_force_id (key_class_binding_set); + key_id_class_binding_set = g_quark_from_static_string (key_class_binding_set); binding_set = g_dataset_id_get_data (class, key_id_class_binding_set); diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c index 7b03cb6397..84a62b0e92 100644 --- a/gtk/gtkcontainer.c +++ b/gtk/gtkcontainer.c @@ -164,8 +164,8 @@ gtk_container_class_init (GtkContainerClass *class) parent_class = gtk_type_class (gtk_widget_get_type ()); - vadjustment_key_id = gtk_object_data_force_id (vadjustment_key); - hadjustment_key_id = gtk_object_data_force_id (hadjustment_key); + vadjustment_key_id = g_quark_from_static_string (vadjustment_key); + hadjustment_key_id = g_quark_from_static_string (hadjustment_key); gtk_object_add_arg_type ("GtkContainer::border_width", GTK_TYPE_ULONG, GTK_ARG_READWRITE, ARG_BORDER_WIDTH); gtk_object_add_arg_type ("GtkContainer::child", GTK_TYPE_WIDGET, GTK_ARG_WRITABLE, ARG_CHILD); diff --git a/gtk/gtkitemfactory.c b/gtk/gtkitemfactory.c index ee35869e30..ebc86c4f3d 100644 --- a/gtk/gtkitemfactory.c +++ b/gtk/gtkitemfactory.c @@ -81,29 +81,29 @@ static const gchar *item_factory_string = "Gtk-"; static GMemChunk *ifactory_item_chunks = NULL; static GMemChunk *ifactory_cb_data_chunks = NULL; static const gchar *key_popup_data = "GtkItemFactory-popup-data"; -static guint key_id_popup_data = 0; +static GQuark quark_popup_data = 0; static const gchar *key_if_menu_pos = "GtkItemFactory-menu-position"; -static guint key_id_if_menu_pos = 0; +static GQuark quark_if_menu_pos = 0; static const gchar *key_item_factory = "GtkItemFactory"; -static guint key_id_item_factory = 0; +static GQuark quark_item_factory = 0; static const gchar *key_item_factory_path = "GtkItemFactory-path"; -static guint key_id_item_factory_path = 0; +static GQuark quark_item_factory_path = 0; static const gchar *key_type_item = ""; -static guint key_id_type_item = 0; +static GQuark quark_type_item = 0; static const gchar *key_type_title = ""; -static guint key_id_type_title = 0; +static GQuark quark_type_title = 0; static const gchar *key_type_radio_item = "<RadioItem>"; -static guint key_id_type_radio_item = 0; +static GQuark quark_type_radio_item = 0; static const gchar *key_type_check_item = "<CheckItem>"; -static guint key_id_type_check_item = 0; +static GQuark quark_type_check_item = 0; static const gchar *key_type_toggle_item = "<ToggleItem>"; -static guint key_id_type_toggle_item = 0; +static GQuark quark_type_toggle_item = 0; static const gchar *key_type_separator_item = "<Separator>"; -static guint key_id_type_separator_item = 0; +static GQuark quark_type_separator_item = 0; static const gchar *key_type_branch = "<Branch>"; -static guint key_id_type_branch = 0; +static GQuark quark_type_branch = 0; static const gchar *key_type_last_branch = "<LastBranch>"; -static guint key_id_type_last_branch = 0; +static GQuark quark_type_last_branch = 0; static GScannerConfig ifactory_scanner_config = { ( @@ -200,18 +200,18 @@ gtk_item_factory_class_init (GtkItemFactoryClass *class) sizeof (GtkIFCBData) * ITEM_BLOCK_SIZE, G_ALLOC_AND_FREE); - key_id_popup_data = gtk_object_data_force_id (key_popup_data); - key_id_if_menu_pos = gtk_object_data_force_id (key_if_menu_pos); - key_id_item_factory = gtk_object_data_force_id (key_item_factory); - key_id_item_factory_path = gtk_object_data_force_id (key_item_factory_path); - key_id_type_item = gtk_object_data_force_id (key_type_item); - key_id_type_title = gtk_object_data_force_id (key_type_title); - key_id_type_radio_item = gtk_object_data_force_id (key_type_radio_item); - key_id_type_check_item = gtk_object_data_force_id (key_type_check_item); - key_id_type_toggle_item = gtk_object_data_force_id (key_type_toggle_item); - key_id_type_separator_item = gtk_object_data_force_id (key_type_separator_item); - key_id_type_branch = gtk_object_data_force_id (key_type_branch); - key_id_type_last_branch = gtk_object_data_force_id (key_type_last_branch); + quark_popup_data = g_quark_from_static_string (key_popup_data); + quark_if_menu_pos = g_quark_from_static_string (key_if_menu_pos); + quark_item_factory = g_quark_from_static_string (key_item_factory); + quark_item_factory_path = g_quark_from_static_string (key_item_factory_path); + quark_type_item = g_quark_from_static_string (key_type_item); + quark_type_title = g_quark_from_static_string (key_type_title); + quark_type_radio_item = g_quark_from_static_string (key_type_radio_item); + quark_type_check_item = g_quark_from_static_string (key_type_check_item); + quark_type_toggle_item = g_quark_from_static_string (key_type_toggle_item); + quark_type_separator_item = g_quark_from_static_string (key_type_separator_item); + quark_type_branch = g_quark_from_static_string (key_type_branch); + quark_type_last_branch = g_quark_from_static_string (key_type_last_branch); } static void @@ -388,8 +388,8 @@ gtk_item_factory_item_remove_widget (GtkWidget *widget, GtkItemFactoryItem *item) { item->widgets = g_slist_remove (item->widgets, widget); - gtk_object_remove_data_by_id (GTK_OBJECT (widget), key_id_item_factory); - gtk_object_remove_data_by_id (GTK_OBJECT (widget), key_id_item_factory_path); + gtk_object_remove_data_by_id (GTK_OBJECT (widget), quark_item_factory); + gtk_object_remove_data_by_id (GTK_OBJECT (widget), quark_item_factory_path); } static void @@ -469,8 +469,8 @@ gtk_item_factory_add_item (GtkItemFactory *ifactory, /* set back pointers for the widget */ - gtk_object_set_data_by_id (GTK_OBJECT (widget), key_id_item_factory, ifactory); - gtk_object_set_data_by_id (GTK_OBJECT (widget), key_id_item_factory_path, item->path); + gtk_object_set_data_by_id (GTK_OBJECT (widget), quark_item_factory, ifactory); + gtk_object_set_data_by_id (GTK_OBJECT (widget), quark_item_factory_path, item->path); gtk_widget_set_name (widget, item->path); /* set accelerator group on menu widgets @@ -678,7 +678,7 @@ gtk_item_factory_from_widget (GtkWidget *widget) g_return_val_if_fail (widget != NULL, NULL); g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - return gtk_object_get_data_by_id (GTK_OBJECT (widget), key_id_item_factory); + return gtk_object_get_data_by_id (GTK_OBJECT (widget), quark_item_factory); } gchar* @@ -687,7 +687,7 @@ gtk_item_factory_path_from_widget (GtkWidget *widget) g_return_val_if_fail (widget != NULL, NULL); g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - return gtk_object_get_data_by_id (GTK_OBJECT (widget), key_id_item_factory_path); + return gtk_object_get_data_by_id (GTK_OBJECT (widget), quark_item_factory_path); } static void @@ -903,7 +903,7 @@ gtk_item_factory_create_item (GtkItemFactory *ifactory, entry->item_type[0] == 0) { item_type_path = (gpointer) key_type_item; - type_id = key_id_type_item; + type_id = quark_type_item; } else { @@ -912,21 +912,21 @@ gtk_item_factory_create_item (GtkItemFactory *ifactory, } radio_group = NULL; - if (type_id == key_id_type_item) + if (type_id == quark_type_item) type = GTK_TYPE_MENU_ITEM; - else if (type_id == key_id_type_title) + else if (type_id == quark_type_title) type = GTK_TYPE_MENU_ITEM; - else if (type_id == key_id_type_radio_item) + else if (type_id == quark_type_radio_item) type = GTK_TYPE_RADIO_MENU_ITEM; - else if (type_id == key_id_type_check_item) + else if (type_id == quark_type_check_item) type = GTK_TYPE_CHECK_MENU_ITEM; - else if (type_id == key_id_type_toggle_item) + else if (type_id == quark_type_toggle_item) type = GTK_TYPE_CHECK_MENU_ITEM; - else if (type_id == key_id_type_separator_item) + else if (type_id == quark_type_separator_item) type = GTK_TYPE_MENU_ITEM; - else if (type_id == key_id_type_branch) + else if (type_id == quark_type_branch) type = GTK_TYPE_MENU_ITEM; - else if (type_id == key_id_type_last_branch) + else if (type_id == quark_type_last_branch) type = GTK_TYPE_MENU_ITEM; else { @@ -980,8 +980,8 @@ gtk_item_factory_create_item (GtkItemFactory *ifactory, widget = gtk_widget_new (type, "GtkWidget::visible", TRUE, - "GtkWidget::sensitive", (type_id != key_id_type_separator_item && - type_id != key_id_type_title), + "GtkWidget::sensitive", (type_id != quark_type_separator_item && + type_id != quark_type_title), "GtkWidget::parent", parent, NULL); @@ -990,7 +990,7 @@ gtk_item_factory_create_item (GtkItemFactory *ifactory, if (GTK_IS_CHECK_MENU_ITEM (widget)) gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (widget), TRUE); - if (type_id != key_id_type_separator_item && *p) + if (type_id != quark_type_separator_item && *p) { GtkWidget *label; @@ -1003,10 +1003,10 @@ gtk_item_factory_create_item (GtkItemFactory *ifactory, "GtkMisc::xalign", 0.0, NULL); } - if (type_id == key_id_type_branch || - type_id == key_id_type_last_branch) + if (type_id == quark_type_branch || + type_id == quark_type_last_branch) { - if (type_id == key_id_type_last_branch) + if (type_id == quark_type_last_branch) gtk_menu_item_right_justify (GTK_MENU_ITEM (widget)); parent = widget; @@ -1242,7 +1242,7 @@ gtk_item_factory_popup_data_from_widget (GtkWidget *widget) ifactory = gtk_item_factory_from_widget (widget); if (ifactory) - return gtk_object_get_data_by_id (GTK_OBJECT (ifactory), key_id_popup_data); + return gtk_object_get_data_by_id (GTK_OBJECT (ifactory), quark_popup_data); return NULL; } @@ -1253,7 +1253,7 @@ gtk_item_factory_popup_data (GtkItemFactory *ifactory) g_return_val_if_fail (ifactory != NULL, NULL); g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL); - return gtk_object_get_data_by_id (GTK_OBJECT (ifactory), key_id_popup_data); + return gtk_object_get_data_by_id (GTK_OBJECT (ifactory), quark_popup_data); } static void @@ -1263,7 +1263,7 @@ ifactory_delete_popup_data (GtkObject *object, gtk_signal_disconnect_by_func (object, GTK_SIGNAL_FUNC (ifactory_delete_popup_data), ifactory); - gtk_object_remove_data_by_id (GTK_OBJECT (ifactory), key_id_popup_data); + gtk_object_remove_data_by_id (GTK_OBJECT (ifactory), quark_popup_data); } void @@ -1293,13 +1293,13 @@ gtk_item_factory_popup_with_data (GtkItemFactory *ifactory, { MenuPos *mpos; - mpos = gtk_object_get_data_by_id (GTK_OBJECT (ifactory->widget), key_id_if_menu_pos); + mpos = gtk_object_get_data_by_id (GTK_OBJECT (ifactory->widget), quark_if_menu_pos); if (!mpos) { mpos = g_new0 (MenuPos, 1); gtk_object_set_data_by_id_full (GTK_OBJECT (ifactory->widget), - key_id_if_menu_pos, + quark_if_menu_pos, mpos, g_free); } @@ -1310,7 +1310,7 @@ gtk_item_factory_popup_with_data (GtkItemFactory *ifactory, if (popup_data != NULL) { gtk_object_set_data_by_id_full (GTK_OBJECT (ifactory), - key_id_popup_data, + quark_popup_data, popup_data, destroy); gtk_signal_connect (GTK_OBJECT (ifactory->widget), diff --git a/gtk/gtkobject.c b/gtk/gtkobject.c index ff4a0ea492..159487ac30 100644 --- a/gtk/gtkobject.c +++ b/gtk/gtkobject.c @@ -539,7 +539,7 @@ gtk_object_weakref (GtkObject *object, g_return_if_fail (GTK_IS_OBJECT (object)); if (!weakrefs_key_id) - weakrefs_key_id = gtk_object_data_force_id (weakrefs_key); + weakrefs_key_id = g_quark_from_static_string (weakrefs_key); weak = g_new (GtkWeakRef, 1); weak->next = gtk_object_get_data_by_id (object, weakrefs_key_id); @@ -1046,7 +1046,7 @@ gtk_object_get_arg_type (const gchar *arg_name) void gtk_object_set_data_by_id (GtkObject *object, - guint data_id, + GQuark data_id, gpointer data) { g_return_if_fail (data_id > 0); @@ -1066,7 +1066,7 @@ gtk_object_set_data (GtkObject *object, void gtk_object_set_data_by_id_full (GtkObject *object, - guint data_id, + GQuark data_id, gpointer data, GtkDestroyNotify destroy) { @@ -1093,7 +1093,7 @@ gtk_object_set_data_by_id_full (GtkObject *object, object->object_data = odata->next; GTK_OBJECT_DATA_DESTROY (odata); - break; + return; } prev = odata; @@ -1102,36 +1102,28 @@ gtk_object_set_data_by_id_full (GtkObject *object, } else { - GtkObjectData *prev; - - prev = NULL; - while (odata) { if (odata->id == data_id) { - /* we need to be unlinked while invoking the destroy function - */ - if (odata->destroy) - { - if (prev) - prev->next = odata->next; - else - object->object_data = odata->next; - - odata->destroy (odata->data); - - odata->next = object->object_data; - object->object_data = odata; - } - - odata->data = data; + register GtkDestroyNotify dfunc; + register gpointer ddata; + + dfunc = odata->destroy; + ddata = odata->data; odata->destroy = destroy; + odata->data = data; + + /* we need to have updated all structures prior to + * invokation of the destroy function + */ + if (dfunc) + dfunc (ddata); + return; } - prev = odata; - odata = prev->next; + odata = odata->next; } if (gtk_object_data_free_list) @@ -1176,7 +1168,7 @@ gtk_object_set_data_full (GtkObject *object, gpointer gtk_object_get_data_by_id (GtkObject *object, - guint data_id) + GQuark data_id) { GtkObjectData *odata; @@ -1214,7 +1206,7 @@ gtk_object_get_data (GtkObject *object, void gtk_object_remove_data_by_id (GtkObject *object, - guint data_id) + GQuark data_id) { if (data_id) gtk_object_set_data_by_id_full (object, data_id, NULL, NULL); @@ -1246,7 +1238,7 @@ gtk_object_set_user_data (GtkObject *object, gpointer data) { if (!user_data_key_id) - user_data_key_id = gtk_object_data_force_id (user_data_key); + user_data_key_id = g_quark_from_static_string (user_data_key); gtk_object_set_data_by_id_full (object, user_data_key_id, data, NULL); } diff --git a/gtk/gtkobject.h b/gtk/gtkobject.h index aa61d44735..be18e8736d 100644 --- a/gtk/gtkobject.h +++ b/gtk/gtkobject.h @@ -343,18 +343,18 @@ void gtk_object_remove_data (GtkObject *object, * These functions are meant for *internal* use only. */ void gtk_object_set_data_by_id (GtkObject *object, - guint data_id, + GQuark data_id, gpointer data); void gtk_object_set_data_by_id_full (GtkObject *object, - guint data_id, + GQuark data_id, gpointer data, GtkDestroyNotify destroy); gpointer gtk_object_get_data_by_id (GtkObject *object, - guint data_id); + GQuark data_id); void gtk_object_remove_data_by_id (GtkObject *object, - guint data_id); -#define gtk_object_data_try_key g_dataset_try_key -#define gtk_object_data_force_id g_dataset_force_id + GQuark data_id); +#define gtk_object_data_try_key g_quark_try_string +#define gtk_object_data_force_id g_quark_from_string /* Set the "user_data" object data field of "object". It should * be noted that this is no different than calling 'gtk_object_set_data' diff --git a/gtk/gtksignal.c b/gtk/gtksignal.c index edd7858e05..c9dc7d0e16 100644 --- a/gtk/gtksignal.c +++ b/gtk/gtksignal.c @@ -65,7 +65,7 @@ struct _GtkSignal struct _GtkSignalHash { GtkType object_type; - guint name_key_id; + GQuark quark; guint signal_id; }; @@ -172,7 +172,7 @@ static GtkSignalMarshal global_marshaller = NULL; static GtkSignalDestroy global_destroy_notify = NULL; static guint gtk_handler_id = 1; -static guint handler_key_id = 0; +static guint handler_quark = 0; static GHashTable *gtk_signal_hash_table = NULL; static GtkSignal *gtk_signals = NULL; static guint gtk_n_signals = 0; @@ -231,14 +231,14 @@ gtk_signal_next_and_invalidate (void) void gtk_signal_init (void) { - if (!handler_key_id) + if (!handler_quark) { GtkSignal *zero; zero = gtk_signal_next_and_invalidate (); g_assert (zero == NULL); - handler_key_id = gtk_object_data_force_id ("gtk-signal-handlers"); + handler_quark = g_quark_from_static_string ("gtk-signal-handlers"); gtk_signal_hash_mem_chunk = g_mem_chunk_new ("GtkSignalHash mem chunk", @@ -270,7 +270,7 @@ gtk_signal_newv (const gchar *r_name, { GtkSignal *signal; GtkSignalHash *hash; - guint id; + GQuark quark; guint i; gchar *name; @@ -280,15 +280,15 @@ gtk_signal_newv (const gchar *r_name, if (nparams) g_return_val_if_fail (params != NULL, 0); - if (!handler_key_id) + if (!handler_quark) gtk_signal_init (); name = g_strdup (r_name); g_strdelimit (name, NULL, '_'); - id = gtk_signal_lookup (name, object_type); - if (id) + quark = gtk_signal_lookup (name, object_type); + if (quark) { g_warning ("gtk_signal_newv(): signal \"%s\" already exists in the `%s' class ancestry\n", r_name, @@ -302,6 +302,7 @@ gtk_signal_newv (const gchar *r_name, { g_warning ("gtk_signal_newv(): signal \"%s\" with return value `%s' excludes GTK_RUN_LAST", name, gtk_type_name (return_val)); + g_free (name); return 0; } @@ -331,19 +332,19 @@ gtk_signal_newv (const gchar *r_name, */ hash = g_chunk_new (GtkSignalHash, gtk_signal_hash_mem_chunk); hash->object_type = object_type; - hash->name_key_id = gtk_object_data_force_id (signal->name); + hash->quark = g_quark_from_string (signal->name); hash->signal_id = signal->signal_id; g_hash_table_insert (gtk_signal_hash_table, hash, GUINT_TO_POINTER (hash->signal_id)); /* insert "signal-name" into hash table */ g_strdelimit (signal->name, NULL, '-'); - id = gtk_object_data_force_id (signal->name); - if (id != hash->name_key_id) + quark = g_quark_from_static_string (signal->name); + if (quark != hash->quark) { hash = g_chunk_new (GtkSignalHash, gtk_signal_hash_mem_chunk); hash->object_type = object_type; - hash->name_key_id = id; + hash->quark = quark; hash->signal_id = signal->signal_id; g_hash_table_insert (gtk_signal_hash_table, hash, GUINT_TO_POINTER (hash->signal_id)); } @@ -405,8 +406,8 @@ gtk_signal_lookup (const gchar *name, g_return_val_if_fail (name != NULL, 0); g_return_val_if_fail (gtk_type_is_a (object_type, GTK_TYPE_OBJECT), 0); - hash.name_key_id = gtk_object_data_try_key (name); - if (hash.name_key_id) + hash.quark = g_quark_try_string (name); + if (hash.quark) { while (object_type) { @@ -886,7 +887,7 @@ gtk_signal_disconnect (GtkObject *object, g_return_if_fail (object != NULL); g_return_if_fail (handler_id > 0); - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); while (handler) { @@ -915,7 +916,7 @@ gtk_signal_disconnect_by_func (GtkObject *object, g_return_if_fail (func != NULL); found_one = FALSE; - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); while (handler) { @@ -948,7 +949,7 @@ gtk_signal_disconnect_by_data (GtkObject *object, g_return_if_fail (object != NULL); found_one = FALSE; - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); while (handler) { @@ -979,7 +980,7 @@ gtk_signal_handler_block (GtkObject *object, g_return_if_fail (object != NULL); g_return_if_fail (handler_id > 0); - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); while (handler) { @@ -1006,7 +1007,7 @@ gtk_signal_handler_block_by_func (GtkObject *object, g_return_if_fail (func != NULL); found_one = FALSE; - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); while (handler) { @@ -1034,7 +1035,7 @@ gtk_signal_handler_block_by_data (GtkObject *object, g_return_if_fail (object != NULL); found_one = FALSE; - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); while (handler) { @@ -1060,7 +1061,7 @@ gtk_signal_handler_unblock (GtkObject *object, g_return_if_fail (object != NULL); g_return_if_fail (handler_id > 0); - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); while (handler) { @@ -1090,7 +1091,7 @@ gtk_signal_handler_unblock_by_func (GtkObject *object, g_return_if_fail (func != NULL); found_one = FALSE; - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); while (handler) { @@ -1119,7 +1120,7 @@ gtk_signal_handler_unblock_by_data (GtkObject *object, g_return_if_fail (object != NULL); found_one = FALSE; - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); while (handler) { @@ -1147,7 +1148,7 @@ gtk_signal_handlers_destroy (GtkObject *object) * handler_key data on each removal */ - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); if (handler) { handler = handler->next; @@ -1159,7 +1160,7 @@ gtk_signal_handlers_destroy (GtkObject *object) gtk_signal_handler_unref (handler, object); handler = next; } - handler = gtk_object_get_data_by_id (object, handler_key_id); + handler = gtk_object_get_data_by_id (object, handler_quark); gtk_signal_handler_unref (handler, object); } } @@ -1190,7 +1191,7 @@ gtk_signal_hash (gconstpointer h) { register const GtkSignalHash *hash = h; - return hash->object_type ^ hash->name_key_id; + return hash->object_type ^ hash->quark; } static gint @@ -1200,7 +1201,7 @@ gtk_signal_compare (gconstpointer h1, register const GtkSignalHash *hash1 = h1; register const GtkSignalHash *hash2 = h2; - return (hash1->name_key_id == hash2->name_key_id && + return (hash1->quark == hash2->quark && hash1->object_type == hash2->object_type); } @@ -1288,11 +1289,11 @@ gtk_signal_handler_unref (GtkHandler *handler, if (handler->prev) handler->prev->next = handler->next; else if (handler->next) - gtk_object_set_data_by_id (object, handler_key_id, handler->next); + gtk_object_set_data_by_id (object, handler_quark, handler->next); else { GTK_OBJECT_UNSET_FLAGS (object, GTK_CONNECTED); - gtk_object_set_data_by_id (object, handler_key_id, NULL); + gtk_object_set_data_by_id (object, handler_quark, NULL); } if (handler->next) handler->next->prev = handler->prev; @@ -1311,11 +1312,11 @@ gtk_signal_handler_insert (GtkObject *object, /* FIXME: remove */ g_assert (handler->next == NULL); /* FIXME: remove */ g_assert (handler->prev == NULL); - tmp = gtk_object_get_data_by_id (object, handler_key_id); + tmp = gtk_object_get_data_by_id (object, handler_quark); if (!tmp) { GTK_OBJECT_SET_FLAGS (object, GTK_CONNECTED); - gtk_object_set_data_by_id (object, handler_key_id, handler); + gtk_object_set_data_by_id (object, handler_quark, handler); } else while (tmp) @@ -1328,7 +1329,7 @@ gtk_signal_handler_insert (GtkObject *object, handler->prev = tmp->prev; } else - gtk_object_set_data_by_id (object, handler_key_id, handler); + gtk_object_set_data_by_id (object, handler_quark, handler); tmp->prev = handler; handler->next = tmp; break; @@ -1469,7 +1470,7 @@ gtk_signal_get_handlers (GtkObject *object, { GtkHandler *handlers; - handlers = gtk_object_get_data_by_id (object, handler_key_id); + handlers = gtk_object_get_data_by_id (object, handler_quark); while (handlers) { diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index d1a6b8ad91..accf1fc350 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -2640,7 +2640,7 @@ gtk_widget_set_style (GtkWidget *widget, { gtk_style_ref (widget->style); if (!saved_default_style_key_id) - saved_default_style_key_id = gtk_object_data_force_id (saved_default_style_key); + saved_default_style_key_id = g_quark_from_static_string (saved_default_style_key); gtk_object_set_data_by_id (GTK_OBJECT (widget), saved_default_style_key_id, widget->style); } @@ -2677,7 +2677,7 @@ gtk_widget_set_rc_style (GtkWidget *widget) { gtk_style_ref (widget->style); if (!saved_default_style_key_id) - saved_default_style_key_id = gtk_object_data_force_id (saved_default_style_key); + saved_default_style_key_id = g_quark_from_static_string (saved_default_style_key); gtk_object_set_data_by_id (GTK_OBJECT (widget), saved_default_style_key_id, widget->style); } gtk_widget_set_style_internal (widget, new_style, initial_emission); @@ -2889,7 +2889,7 @@ gtk_widget_set_parent_window (GtkWidget *widget, if (parent_window != old_parent_window) { if (!parent_window_key_id) - parent_window_key_id = gtk_object_data_force_id (parent_window_key); + parent_window_key_id = g_quark_from_static_string (parent_window_key); gtk_object_set_data_by_id (GTK_OBJECT (widget), parent_window_key_id, parent_window); if (old_parent_window) @@ -2946,7 +2946,7 @@ gtk_widget_set_uposition (GtkWidget *widget, if (!aux_info) { if (!aux_info_key_id) - aux_info_key_id = gtk_object_data_force_id (aux_info_key); + aux_info_key_id = g_quark_from_static_string (aux_info_key); aux_info = gtk_widget_aux_info_new (); gtk_object_set_data_by_id (GTK_OBJECT (widget), aux_info_key_id, aux_info); } @@ -2988,7 +2988,7 @@ gtk_widget_set_usize (GtkWidget *widget, if (!aux_info) { if (!aux_info_key_id) - aux_info_key_id = gtk_object_data_force_id (aux_info_key); + aux_info_key_id = g_quark_from_static_string (aux_info_key); aux_info = gtk_widget_aux_info_new (); gtk_object_set_data_by_id (GTK_OBJECT (widget), aux_info_key_id, aux_info); } @@ -3029,7 +3029,7 @@ gtk_widget_set_events (GtkWidget *widget, *eventp = events; if (!event_key_id) - event_key_id = gtk_object_data_force_id (event_key); + event_key_id = g_quark_from_static_string (event_key); gtk_object_set_data_by_id (GTK_OBJECT (widget), event_key_id, eventp); } else if (eventp) @@ -3062,7 +3062,7 @@ gtk_widget_set_extension_events (GtkWidget *widget, *modep = mode; if (!extension_event_key_id) - extension_event_key_id = gtk_object_data_force_id (extension_event_key); + extension_event_key_id = g_quark_from_static_string (extension_event_key); gtk_object_set_data_by_id (GTK_OBJECT (widget), extension_event_key_id, modep); } -- 2.30.2